package com.guaoran.interview.in2018.thread;

/**
 * @author : guCheng
 * @title : TreadAndRunnable
 * @Description : wait和sleep的区别，必须理解；
 * @date :2018年3月10日下午2:49:12
 */
public class TreadAndRunnable {
	/**
	 * 1.实现线程的多种方式 
	 * 	1.集成Thread类， 
	 * 	2.实现Runnable接口 
	 * 2.停止线程的方法：
	 * 	1.使用Thread.interrupted()；中断线程； 
	 * 	2.使用标志位：退出
	 * 	3.stop(),不建议使用，因为会释放锁，造成不可估计的损失
	 * 3.wait和sleep的区别
	 * 	1.wait:属于Object类；使线程处于等待状态，同时释放锁，只有notify和notifyAll的时候才会唤醒锁
	 * 	2.sleep:属于Thread，使线程处于睡眠状态，不释放锁，仍然监控着。
	 * 	
	 */
	public static void getThreadSource() {

	}
	//实现runnable接口interrupted中断线程
	public static void runnableInterrupt() {
		Thread two = new Thread(new ThreadTwo());
		two.start();
		try {
			Thread.sleep(1);
			two.interrupt();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	// 使用退出标志位
	public static void threadExit() {
		ThreadOne one = new ThreadOne();
		one.start();
		try {
			Thread.sleep(2);
			one.exit = true;
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		getThreadSource();
	}
}